//
//  CPMainViewController.swift
//  WeiBo1
//
//  Created by chengpeng on 16/3/4.
//  Copyright © 2016年 chengpeng. All rights reserved.
//

import UIKit

class CPMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        
        
        let tb = CPTabBar()
        
        //1.使用 [weak self ] 解决循环引用，在闭包里面的 self 就是一个可选值，因为其对象销毁后，闭包里的self 会指向nil
        
        //2.使用 [unowned self] 解决循环引用，但其修饰的 self 在闭包里面是真实存在的值，一旦 self 指向的对象销毁，那么就会崩溃，与 OC中的 unsafe_unretained 一样
        tb.composeButtonClickClosure = {
            [unowned self] in
            print("哈哈")
            
            
            
        }
        //readOnly的属性不能直接设置值，需要使用KVC
        //self.tabBar = tb
        self.setValue(tb, forKeyPath: "tabBar")
        
        //可以统一设置 tabbar 上面渲染的颜色
        //self.tabBar.tintColor = UIColor.orangeColor()
        
        //添加子控制器
        addChildViewController(CPHomeTableViewController(), imageNamed: "tabbar_home", title: "首页")
        addChildViewController(CPMessageTableViewController(), imageNamed: "tabbar_message_center", title: "消息")
        addChildViewController(CPDiscoverTableViewController(), imageNamed: "tabbar_discover", title: "发现")
        addChildViewController(CPProfileTableViewController(), imageNamed: "tabbar_profile", title: "我")
        
    }
    
    
    /**
     添加子控制器
     
     - parameter childController: 子控制器
     - parameter imageNamed:      对应的图标的版本名
     - parameter title:           标题
     */
    private func addChildViewController(childController: UIViewController,imageNamed: String, title: String) {
        
        //设置默认的图标及选中图标
        childController.tabBarItem.image = UIImage(named: imageNamed)?.imageWithRenderingMode(.AlwaysOriginal)
        childController.tabBarItem.selectedImage = UIImage(named: "\(imageNamed)_selected")?.imageWithRenderingMode(.AlwaysOriginal)
        
        //设置标题
        //childController.navigationItem.title = title
        //childController.tabBarItem.title = title
        
        childController.title = title
        
        //设置文字选中的颜色
        let attr = [NSForegroundColorAttributeName:UIColor.orangeColor()]
        
        childController.tabBarItem.setTitleTextAttributes(attr, forState: .Selected)
        
        
        //如果只显示图片的话，解决图片靠上的问题
        //childController.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
        

        
        addChildViewController(UINavigationController(rootViewController: childController))
        
    }

}
